package com.ruoyi.system.service.report;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.TempleLib;
import com.ruoyi.system.domain.SequenceDto;
import com.ruoyi.system.domain.TimeDoctorDto;
import com.ruoyi.system.domain.report.vo.*;
import com.ruoyi.system.domain.BgDto;
import com.ruoyi.system.domain.DoctorDto;

import java.util.HashMap;
import java.util.List;

public interface ITeacherService {
    TabPtdetailTailPatientTotalVO getList(TabPtdetailTailPatientVO tabPtdetailTailPatientVO);

    List<String> getDropDownCheckName();

    List<StatusVo> getDropDownState();

    SurveyVo getSurvey(String patientId);

    PtDetailBgReadyVo getBgReadyTxt(String ptdeId,String userName,String reportId);

    PtCheckOpinionVo ptdtCheckyjTxt(String patientId);

    PtDetailCheckSeeTxtVo ptdtCheckSjTxt(String patientId);

    PtPatientVo getPatient(String ptdeId);

    void updatePatient(PtPatientVo ptPatientVo);

    List<HistoryVo> getHistory(String patientId, String ptdeId);

    HistoryVo getPatientReportInfo(String ptdeId);

    List<StudiesSeriesVo>  getStudiesSeries(String checkCode);

    HashMap<String, List<TreeSelect>> getTemplate(Long userId);

    TemplateInfo templateInfo(String id, String parentId);

    List<ClassLIstVo> getClassList(String username);

    List<ClassStudentListResVo> getClassStudentList(String classZ);

    void addRelease(List<ClassStudentListVo> list,String teacherUserName);

    List<StudentReportListPageResVo> getStudentReportListPage(StudentReportReqVo studentReportReqVo, String userName);

    void addCommentScore(CommentScoreReqVo commentScoreReqVo,String status);

    void updateCommentScore(CommentScoreReqVo commentScoreReqVo);

    List<String> getCompleteStatus();

    CommentReportResVo getReportComment(String reportId);

    List<DICOMSeriesImgVo> getStudyInsta(String studyInsta);

    List<String> getDropDownCheckMachine();

    List<String> getDropDownXxj();


    List<HistoryVo2> getHistoryByCheckCode(String ptdtCheckCode);

    List<HistoryVo2> getHistoryByPtName(String ptName);

    PtPatienVo2 getPatientPro(String ptdeId);


    void updateMyTemplate(TemplateUpdata template);

    List<String> getDropDownModelName();

    List<String> getDropDownPtdtModelName();

    void addMyTemplate(TemplateUpdata template);

    void delMyTemplate(TemplateUpdata template);

    void delMyChildrenTemplate(List<TempleLib> templeLiblist);

    List<String> GetEquipments();

    List<String> GetBranch();

    List<TabPtdetailTailPatientVO> GetBgDoctor(String ptName);

    List<String> getDoctorDropDown();

    void changePtInfo(TabPtdetailTailPatientVO tabPtdetailTailPatientVO);

    /**
     * 报告医生
     * @param bgDto
     * @return
     */
    // 报告提取
    AjaxResult ExtractReport(BgDto bgDto);

    // 撤销报告提取
    AjaxResult returnPtdStatus(BgDto bgDto);

    // 获取所有报告医生
    List<DoctorDto> AllBgDoctor();

    // 提交审核
    AjaxResult submitCommited(BgDto bgDto);

    // 撤销提交审核
    AjaxResult backCommited(BgDto bgDto);


    /**
     * 审核医生
     * @param bgDto
     * @return
     */
    // 审核提取
    AjaxResult ExtractSHReport(BgDto bgDto);

    // 撤销审核提取
    AjaxResult returnPtdStatus2(BgDto bgDto);

    // 审核通过
    AjaxResult ReportApproved(BgDto bgDto);

    // 获取所有审核医生
    List<DoctorDto> AllShDoctor();

    // 转审
    AjaxResult changeShDoctor(BgDto bgDto);

    // 提交复审
    AjaxResult submitCommited2(BgDto bgDto);

    // 撤销提交复审
    AjaxResult backCommited2(BgDto bgDto);

    /**
     * 复审医生
     */

    // 复审提取
    AjaxResult changePtdStatus3(BgDto bgDto);

    // 撤销复审提取
    AjaxResult returnPtdStatus3(BgDto bgDto);

    // 复审通过
    AjaxResult reportApproved2(BgDto bgDto);

    // 获取所有复审医生
    List<DoctorDto> AllFsDoctor();

    // 转复审
    AjaxResult changeShDoctor2(BgDto bgDto);



    // 获取当前报告状态以及对应医生和时间
    TimeDoctorDto timeAndDoctor(String id);

    // 序列
    List<SequenceDto> getSequenceByname(List<String> name);

    SequenceDto getSequenceByptdeid(String ptdeid);
}
